# # 定义一个圆形类,半径是这个圆形的属性,实例化一个半径为5的圆形,一个半径为10的圆形，定义方法计算圆形的面积和周长
# class Yuan():
#
#     def __init__(self, r):
#         self.r = r
#
#     def jisuan_mianji(self):
#         return 3.14*self.r**2
#
#     def jisuan_zhouchang(self):
#         return 2*3.14*self.r
#
# y_5 = Yuan(5)
# y_10 = Yuan(10)
# print("面积为：",y_5.jisuan_mianji())
# print("周长为：",y_5.jisuan_zhouchang())
# print("面积为：",y_10.jisuan_mianji())
# print("周长为：",y_10.jisuan_zhouchang())
# # 浮点数都有精度问题


# 补充代码，实现用户登录和注册
class User:
    def __init__(self, name, pwd):
        self.name = name
        self.pwd = pwd


class Account:
    def __init__(self):
        # 用户列表，数据格式：[user对象，user对象，user对象]
        self.user_list = []

    def login(self):
        """
        用户登录，输入用户名和密码然后去self.user_list中校验用户合法性
        :return:
        """
        print("执行登录功能......")
        user_dic = {}
        for user in self.user_list:
            user_dic[user.name] = user.pwd
        status = False
        for i in range(3):
            name = input("请输入用户名：")
            pwd = input("请输入密码：")
            if user_dic.get(name) == pwd:
                print("用户登录成功......")
                status = True
                break
            else:
                print("用户名或密码错误，请重新输入...")
        if status:
            print("登录成功，进入系统...")
        else:
            print("连续登录失败三次，请稍后再试...")
            # if name in user_dic.keys():
            #     # 校验密码
            #     if user_dic.get(name) == pwd:
            #         print("用户登录成功......")
            #         # status = True
            #         break
            #     else:
            #         print("用户名或密码错误，请重新输入...")
            # else:
            #     print("用户名或密码错误，请重新输入...")

    def register(self):
        """
        用户注册，每注册一个用户就创建一个user对象，然后添加到self.user_list中，表示注册成功。
        :return:
        """

        print("执行注册功能.......")
        status = False
        for i in range(3):
            name = input("请输入用户名：")
            if len(self.user_list) == 0:
                pwd = input("请输入密码：")
                self.user_list.append(User(name, pwd))
                status = True
                break
            else:
                if name in [user.name for user in self.user_list]:
                    print("用户名已存在，请重新输入....")
                else:
                    pwd = input("请输入密码：")
                    self.user_list.append(User(name, pwd))
                    status = True
                    break
        if status:
            print("注册成功...")
        else:
            print("连续三次输入重复的用户名，退出注册模块...")


    def run(self):
        """
        主程序
        :return:
        """
        print("欢迎使用用户管理系统".center(50, "*"))
        while True:
            value = input("请选择你的操作，登录（1），注册（2），退出（q/Q）：")
            if value == '1':
                self.login()
            elif value == '2':
                self.register()
            elif value.upper() == "Q":
                print("退出系统")
                break
            else:
                print("输入错误，请重新输入")
        print("退出系统成功，欢迎再次使用".center(50, "*"))

if __name__ == '__main__':
    obj = Account()
    obj.run()